package com.in.service;

import com.in.dto.LoginDto;
import com.in.entity.InUser;
import com.in.utils.Result;
import jakarta.mail.MessagingException;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

public interface InUserService {


    /**
     * 查询所有记录
     *
     * @return 返回集合，没有返回空List
     */
    List<InUser> listAll();


    /**
     * 根据主键查询
     *
     * @param userId 主键
     * @return 返回记录，没有返回null
     */
    InUser getById(String userId);
	
    /**
     * 新增，插入所有字段
     *
     * @param inUser 新增的记录
     * @return 返回影响行数
     */
    int insert(InUser inUser);

    /**
     * 修改，忽略null字段
     *
     * @param inUser 修改的记录
     * @return 返回影响行数
     */
    Result update(InUser inUser, String token, MultipartFile file);
	
    /**
     * 删除记录
     *
     * @param inUser 待删除的记录
     * @return 返回影响行数
     */
    int delete(InUser inUser);

    /**
     * @Author liulianjia
     * @Description 登录
     * @Date 2024/11/26 16:47
     **/
    Result login(LoginDto dto, HttpServletRequest request) throws IOException;

    /**
     * @Author liulianjia
     * @Description 发送验证码
     * @Date 2024/12/2 14:36
     **/
    boolean getYzm(LoginDto dto) throws MessagingException, UnsupportedEncodingException;

    /**
     * @Author liulianjia
     * @Description 登出
     * @Date 2024/12/4 15:21
     **/
    boolean loginOut(String token);

    /**
     * @Author liulianjia
     * @Description 重置密码
     * @Date 2024/12/5 15:53
     **/
    boolean restPassword(InUser user, String token);
	
}